Libraries

The HURD distribution does not just contain servers. Since GNU wish the kernel to be easily extensible, they have provided a large number of libraries for programmers to use in order to help them write servers faster.

For example, the ext2fs server depends on the HURD libraries diskfs, pager, iohelp, fshelp, store, ports, threads, ihash and shouldbeinlibc.

Some of these libraries do fairly mundane things, for example, libihash provides an implementation of hash tables. Since this is supplied with the OS, there is no need for anyone to write their own implementation. libshouldbeinlibc, as its name suggests, contains about 40 different functions that are currently missing from libc but logically belong there.

Many are to do with implementing filing systems: diskfs, fshelp, netfs and trivfs all help in different ways. The general idea is that the author of a new filing system only needs to implement the parts which are specific to their filing system.

The threads library offers the interface to Mach CThreads which used to be provided as part of the Mach 4 distribution but is no longer part of the GNUmach distribution. ports provides a higher level interface to Mach ports.

ftpconn manages ftp connections, pager exists to help servers act as memory pagers. This is less specialist than it sounds; for example with the mmap function, any filesystem server is acting as a pager. store helps tasks use other servers as pagers. pipe provides a high-level communications pipe between two processes. ps simplifies obtaining process information.